package com.ljn.data.utils;

import com.ljn.data.entity.Pagination;
import java.util.ArrayList;
import java.util.List;

import org.springframework.util.CollectionUtils;


public class PageUtil
{
	/**
	 * @description:分页工具类
	 * @param list 需要分页的集合
	 * @param page 页码从1开始
	 * @param numPage  页大小
	 * @return
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static <T> Pagination getPagination(List<T> list, int page, int numPage)
	{
		Pagination pagination = new Pagination();  // 分页对象
		int countPage = (list.size() % numPage == 0) ? (list.size() / numPage) : (list.size() / numPage) + 1;
		pagination.setBeginPageIndex(1);
		pagination.setEndPageIndex((list.size() % numPage) == 0 ? (list.size() / numPage) : (list.size() / numPage) + 1);
		pagination.setPageCount(countPage);
		if(countPage < page){
			page = countPage;
		}
		
		// 组装分页集合对象
		List<T>  pageList = new ArrayList<T>();

		if (!CollectionUtils.isEmpty(list))
		{
			for (int i = (page - 1) * numPage; i < page * numPage; i++)
			{
				// 如果没有则跳出循环
				if (i > list.size() - 1)
				{
					break;
				}
				pageList.add(list.get(i));
			}
		}

		

		pagination.setCurrentPage(page);
		pagination.setNumPerPage(numPage);
		pagination.setRecordList(pageList);
		pagination.setTotalCount(list.size());
		
		return pagination;
	}

}